<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    
    <title>Construct3小游戏项目 | Hide on bush</title>
    <meta name="viewport" content="width=device-width,minimum-scale=1">
    <meta name="generator" content="Hugo 0.76.2" />
    
    
      <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
    

    
    
      <link href="/dist/css/app.4fc0b62e4b82c997bb0041217cd6b979.css" rel="stylesheet">
    

    

    
      

    

    
    
    <meta property="og:title" content="Construct3小游戏项目" />
<meta property="og:description" content="Construct3 Gaming" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://hide-on-bush2.gitee.io/post/construct3/" />
<meta property="article:published_time" content="2020-09-15T22:30:49+08:00" />
<meta property="article:modified_time" content="2020-09-15T22:30:49+08:00" />
<meta itemprop="name" content="Construct3小游戏项目">
<meta itemprop="description" content="Construct3 Gaming">
<meta itemprop="datePublished" content="2020-09-15T22:30:49+08:00" />
<meta itemprop="dateModified" content="2020-09-15T22:30:49+08:00" />
<meta itemprop="wordCount" content="111">



<meta itemprop="keywords" content="" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Construct3小游戏项目"/>
<meta name="twitter:description" content="Construct3 Gaming"/>

	
  </head>

  <body class="ma0 avenir bg-near-white">

    
   
  

  <header>
    <div class="bg-black">
      <nav class="pv3 ph3 ph4-ns" role="navigation">
  <div class="flex-l justify-between items-center center">
    <a href="/" class="f3 fw2 hover-white no-underline white-90 dib">
      
        Hide on bush
      
    </a>
    <div class="flex-l items-center">
      

      
        <ul class="pl0 mr3">
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/about/" title="About page">
              About
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/post/" title="Articles page">
              Articles
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/homework/" title="Homework page">
              Homework
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/paper/" title="Paper page">
              Paper
            </a>
          </li>
          
        </ul>
      
      




<a href="https://twitter.com/GoHugoIO" target="_blank" class="link-transition twitter link dib z-999 pt3 pt0-l mr1" title="Twitter link" rel="noopener" aria-label="follow on Twitter——Opens in a new window">
  <svg height="32px"  style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M37.167,22.283c-2.619,0.953-4.274,3.411-4.086,6.101  l0.063,1.038l-1.048-0.127c-3.813-0.487-7.145-2.139-9.974-4.915l-1.383-1.377l-0.356,1.017c-0.754,2.267-0.272,4.661,1.299,6.271  c0.838,0.89,0.649,1.017-0.796,0.487c-0.503-0.169-0.943-0.296-0.985-0.233c-0.146,0.149,0.356,2.076,0.754,2.839  c0.545,1.06,1.655,2.097,2.871,2.712l1.027,0.487l-1.215,0.021c-1.173,0-1.215,0.021-1.089,0.467  c0.419,1.377,2.074,2.839,3.918,3.475l1.299,0.444l-1.131,0.678c-1.676,0.976-3.646,1.526-5.616,1.568  C19.775,43.256,19,43.341,19,43.405c0,0.211,2.557,1.397,4.044,1.864c4.463,1.377,9.765,0.783,13.746-1.568  c2.829-1.673,5.657-5,6.978-8.221c0.713-1.716,1.425-4.851,1.425-6.354c0-0.975,0.063-1.102,1.236-2.267  c0.692-0.678,1.341-1.419,1.467-1.631c0.21-0.403,0.188-0.403-0.88-0.043c-1.781,0.636-2.033,0.551-1.152-0.402  c0.649-0.678,1.425-1.907,1.425-2.267c0-0.063-0.314,0.042-0.671,0.233c-0.377,0.212-1.215,0.53-1.844,0.72l-1.131,0.361l-1.027-0.7  c-0.566-0.381-1.361-0.805-1.781-0.932C39.766,21.902,38.131,21.944,37.167,22.283z M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4  s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/></svg>

<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000" width="8px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/>
</svg>
</span></a>





<a href="https://github.com/Hide-on-bush2" target="_blank" class="link-transition github link dib z-999 pt3 pt0-l mr1" title="Github link" rel="noopener" aria-label="follow on Github——Opens in a new window">
  <svg  height="32px"  style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
  <path d="M256,32C132.3,32,32,134.8,32,261.7c0,101.5,64.2,187.5,153.2,217.9c11.2,2.1,15.3-5,15.3-11.1   c0-5.5-0.2-19.9-0.3-39.1c-62.3,13.9-75.5-30.8-75.5-30.8c-10.2-26.5-24.9-33.6-24.9-33.6c-20.3-14.3,1.5-14,1.5-14   c22.5,1.6,34.3,23.7,34.3,23.7c20,35.1,52.4,25,65.2,19.1c2-14.8,7.8-25,14.2-30.7c-49.7-5.8-102-25.5-102-113.5   c0-25.1,8.7-45.6,23-61.6c-2.3-5.8-10-29.2,2.2-60.8c0,0,18.8-6.2,61.6,23.5c17.9-5.1,37-7.6,56.1-7.7c19,0.1,38.2,2.6,56.1,7.7   c42.8-29.7,61.5-23.5,61.5-23.5c12.2,31.6,4.5,55,2.2,60.8c14.3,16.1,23,36.6,23,61.6c0,88.2-52.4,107.6-102.3,113.3   c8,7.1,15.2,21.1,15.2,42.5c0,30.7-0.3,55.5-0.3,63c0,6.1,4,13.3,15.4,11C415.9,449.1,480,363.1,480,261.7   C480,134.8,379.7,32,256,32z"/>
</svg>

<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000" width="8px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/>
</svg>
</span></a>








    </div>
  </div>
</nav>

    </div>
  </header>



    <main class="pb7" role="main">
      
  
  <article class="flex-l flex-wrap justify-between mw8 center ph3">
    <header class="mt4 w-100">
      <aside class="instapaper_ignoref b helvetica tracked">
          
        ARTICLES
      </aside>
      




  <div id="sharing" class="mt3">

    
    <a href="https://www.facebook.com/sharer.php?u=https://hide-on-bush2.gitee.io/post/construct3/" class="facebook no-underline" aria-label="share on Facebook">
      <svg height="32px"  style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M28.765,50.32h6.744V33.998h4.499l0.596-5.624h-5.095  l0.007-2.816c0-1.466,0.14-2.253,2.244-2.253h2.812V17.68h-4.5c-5.405,0-7.307,2.729-7.307,7.317v3.377h-3.369v5.625h3.369V50.32z   M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;"/></svg>

    </a>

    
    
    <a href="https://twitter.com/share?url=https://hide-on-bush2.gitee.io/post/construct3/&amp;text=Construct3%e5%b0%8f%e6%b8%b8%e6%88%8f%e9%a1%b9%e7%9b%ae" class="twitter no-underline" aria-label="share on Twitter">
      <svg height="32px"  style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M37.167,22.283c-2.619,0.953-4.274,3.411-4.086,6.101  l0.063,1.038l-1.048-0.127c-3.813-0.487-7.145-2.139-9.974-4.915l-1.383-1.377l-0.356,1.017c-0.754,2.267-0.272,4.661,1.299,6.271  c0.838,0.89,0.649,1.017-0.796,0.487c-0.503-0.169-0.943-0.296-0.985-0.233c-0.146,0.149,0.356,2.076,0.754,2.839  c0.545,1.06,1.655,2.097,2.871,2.712l1.027,0.487l-1.215,0.021c-1.173,0-1.215,0.021-1.089,0.467  c0.419,1.377,2.074,2.839,3.918,3.475l1.299,0.444l-1.131,0.678c-1.676,0.976-3.646,1.526-5.616,1.568  C19.775,43.256,19,43.341,19,43.405c0,0.211,2.557,1.397,4.044,1.864c4.463,1.377,9.765,0.783,13.746-1.568  c2.829-1.673,5.657-5,6.978-8.221c0.713-1.716,1.425-4.851,1.425-6.354c0-0.975,0.063-1.102,1.236-2.267  c0.692-0.678,1.341-1.419,1.467-1.631c0.21-0.403,0.188-0.403-0.88-0.043c-1.781,0.636-2.033,0.551-1.152-0.402  c0.649-0.678,1.425-1.907,1.425-2.267c0-0.063-0.314,0.042-0.671,0.233c-0.377,0.212-1.215,0.53-1.844,0.72l-1.131,0.361l-1.027-0.7  c-0.566-0.381-1.361-0.805-1.781-0.932C39.766,21.902,38.131,21.944,37.167,22.283z M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4  s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/></svg>

    </a>

    
    <a href="https://www.linkedin.com/shareArticle?mini=true&amp;url=https://hide-on-bush2.gitee.io/post/construct3/&amp;title=Construct3%e5%b0%8f%e6%b8%b8%e6%88%8f%e9%a1%b9%e7%9b%ae" class="linkedin no-underline" aria-label="share on LinkedIn">
      <svg  height="32px"  style="enable-background:new 0 0 65 65;" version="1.1" viewBox="0 0 65 65" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <path d="M50.837,48.137V36.425c0-6.275-3.35-9.195-7.816-9.195  c-3.604,0-5.219,1.983-6.119,3.374V27.71h-6.79c0.09,1.917,0,20.427,0,20.427h6.79V36.729c0-0.609,0.044-1.219,0.224-1.655  c0.49-1.22,1.607-2.483,3.482-2.483c2.458,0,3.44,1.873,3.44,4.618v10.929H50.837z M22.959,24.922c2.367,0,3.842-1.57,3.842-3.531  c-0.044-2.003-1.475-3.528-3.797-3.528s-3.841,1.524-3.841,3.528c0,1.961,1.474,3.531,3.753,3.531H22.959z M34,64  C17.432,64,4,50.568,4,34C4,17.431,17.432,4,34,4s30,13.431,30,30C64,50.568,50.568,64,34,64z M26.354,48.137V27.71h-6.789v20.427  H26.354z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/>
</svg>

    </a>
  </div>


      <h1 class="f1 athelas mt3 mb1">Construct3小游戏项目</h1>
      
      
      <time class="f6 mv4 dib tracked" datetime="2020-09-15T22:30:49+08:00">September 15, 2020</time>

      
      
    </header>
    <div class="nested-copy-line-height lh-copy serif f4 nested-links nested-img mid-gray pr4-l w-two-thirds-l"><h1 id="用construct3做一个lol走a练习小游戏">用Construct3做一个LOL走a练习小游戏</h1>

<p>演示视频：<a href="https://www.bilibili.com/video/BV1vD4y1R7Kh/">Bilibili</a></p>

<h2 id="背景">背景</h2>

<p>英雄联盟(League of Legends，简称LOL)，也叫撸啊撸，是当代最热门的Moba类游戏。据不完全统计，至2015年7月为止，超过1亿名玩家每个月至少玩一次《英雄联盟》，而每天都玩的玩家超过2700万，高峰时段有超过750万人同时在线。2015年7月，该公司估计全世界每个月有超过1亿5千万名的活跃玩家。LOL已经成为当今史诗级的一款游戏，深受全球玩家喜爱。每年拳头公司举办的英雄联盟全球总决赛，更是成为了一个重量级的电竞赛事，吸引了大量的英雄联盟爱好者前往线下观赛。在现今，不可否认的是，英雄联盟正逐渐成为像篮球、足球一样家喻户晓、老少皆宜的运动项目</p>

<p>ADC(Attack Damage Carry)，是这个游戏中很重要的一个位置，他们主要造成远程物理伤害，能够提供稳定和较高的每秒伤害，是游戏中破坏防御塔的主力和持续伤害输出的主要来源。而玩家需要熟练掌握ADC这个位置，一个很重要的基本功便是走a</p>

<p>”走A“通俗理解便是：边移动边攻击敌人。在LOL这个游戏中，游戏角色发出一个普通攻击(也叫平a)大致需要经过三个过程：攻击前摇，攻击发生，攻击后摇。攻击前摇便是在角色发出普通攻击之前的抬手动作，攻击后摇是角色在发出普通攻击之后的收手动作。攻击前摇和攻击后摇需要一定的施法时间，而这三个过程被成为普通攻击的一个周期。根据游戏机制，我们可以在攻击后摇的时候进行移动，因此我们可以利用这个时间间隔控制游戏角色进行走位，以拉开与敌人的距离或者躲避敌方角色的技能</p>

<p>伊泽瑞尔（Ezreal）是一个需要在当今版本非常强势的ADC英雄，它需要掌控者协调好平a和技能的衔接，因此我用Construct3做了一个EZ的走a练习小游戏，可以提供给广大ADC玩家用来训练自己的走a技巧</p>

<h2 id="游戏玩法">游戏玩法</h2>

<p>游戏一开始的界面如下：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhpq12xf6j319s0ty7wi.jpg" alt=""></figure></p>

<p>玩家可以通过A+鼠标左键的方式对敌方英雄（劫）进行普通攻击，也可以通过Q键向鼠标方向施放技能，每个劫的血量为5,每个普通攻击可以给予劫1点伤害，每个技能可以给予劫2点伤害。劫的血量降到0以下后会被击杀，系统每3秒会在地图中随机产生一个劫，并劫会持续向着玩家（EZ）的方向靠近。玩家可以通过右击鼠标点击地板进行移动，但是在攻击的时候会停止移动。每击杀一个劫，记分板上会增加分数，看看你能拿到多少分数吧！</p>

<h2 id="游戏制作">游戏制作</h2>

<h3 id="创建工程">创建工程</h3>

<p>首先进入<a href="https://editor.construct.net/">以下网址</a>：</p>

<p><figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhppahj6nj31h00u019c.jpg" alt=""></figure></p>

<p>然后点击New Project,会弹出来以下框框：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhpbv6i5wj30ng0ik400.jpg" alt=""></figure></p>

<p>然后我们点击Creat，便可以创建一个工程：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhpddwnhlj31gt0u0aiq.jpg" alt=""></figure></p>

<h3 id="创建背景图">创建背景图</h3>

<p>我们需要创建一个类似召唤师峡谷中的地图，于是我们可以进入英雄联盟训练模式中截取下路兵线交汇处的地图：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhpgv41snj30mk0d8h3t.jpg" alt=""></figure></p>

<p>然后点击工程界面的空白处，会弹出：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhphth89kj30y60sgjud.jpg" alt=""></figure></p>

<p>我们点击Tiled Background，发现指针变成了十字的模式，点击工程画布的空白处，会弹出：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhpjf86aej31cp0u0dr3.jpg" alt=""></figure></p>

<p>在这里我们可以选择背景的样式，我们选择上面工具栏的第二个按钮来导入我们先前截取得到的背景图，可以得到以下结果：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhplayk9wj31d50u01kx.jpg" alt=""></figure></p>

<p>然后就可以关闭这个窗口啦，因为背景图我们一般是不移动的，我们可以背景，选择把这个背景锁住：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhpn4wvlij30p00sialr.jpg" alt=""></figure></p>

<p>这样子我们的背景就已经创建完毕了</p>

<h3 id="创建人物">创建人物</h3>

<p>与创建背景图一样，我们双击画布空白处（因为背景图已经锁定了，双击背景图也是可以的），弹出以下窗口：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhphth89kj30y60sgjud.jpg" alt=""></figure></p>

<p>我们点击Sprite进行创建，同样会弹出一个空白的模版，与创建背景图相同，我们只需要把抠好的图导入变好啦</p>

<p>在这个游戏中需要的物体模型只有四个，分别是：</p>

<ul>
<li>EZ</li>
<li>劫</li>
<li>Q技能</li>
<li>平a</li>
</ul>

<p>这些模型的图片都可以召唤师峡谷中通过截屏找到<sup>-</sup></p>

<p>除了将这些模型进行导入之外，我们还需要设置模型的碰撞体积和重心点，系统会根据前者来判断是否会发生碰撞事件，后者决定该物体的Position</p>

<p>以EZ为例：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhpysphdrj312k0sidj6.jpg" alt=""></figure></p>

<p>我们点击左边工具拦的最后一个，然后会出现一个由多个小正方形连接而成的方框，我们调整这些小正方形的位置，使它们紧贴着EZ的身体，便可以将EZ的碰撞体积缩小到模型本身的身体范围</p>

<p>然后是重心点的位置，我们点击左边工具栏的倒数第二个：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhq2dxdm4j312i0nk0vd.jpg" alt=""></figure></p>

<p>可以看到出现一个小棱形，我们把这个小棱形的位置放到人物的中心中会更加合理</p>

<p>以同样方法可以创建另外3个模型，方法很简单，难的只是找到好看的素材</p>

<h3 id="给模型添加动作方式">给模型添加动作方式</h3>

<p>不同的模型可能会有不同的运动方式，比如EZ的运动方式是点到点的，因为我们是用鼠标右键来控制他的移动；而Q技能的运动方式是直线的，因为我们不应该保证Q一定能命中</p>

<p>以EZ为例，我们点击EZ这个模型，然后在左侧的状态栏里找到Behaviours这一栏，然后在最后有一个Add/edit Behaviours的选项，我们点击它：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhq8fbu3kj30n20h40ty.jpg" alt=""></figure></p>

<p>然后点击Add new behaviour，弹出：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhq9a1f5jj30y40sktbq.jpg" alt=""></figure></p>

<p>滑倒Movement部分中，我们可以看到这里有很多的运动方式可以添加，对于这些运动方式的区别请到官网查询文档，在这里EZ需要的运动方式是Move To方式，我们点击它，发现就会加入到已有的behaviours里面了</p>

<p>当然这里只是添加了一种移动的方式，如何控制它是在后面的事件触发行为中设置</p>

<p>以同样方式可以给另外3个对象也添加对应的移动方式</p>

<h3 id="给模型添加事件">给模型添加事件</h3>

<p>添加事件是游戏的一个最重要的部分，它给游戏与玩家的交互设置了对应的事件发生结果</p>

<p>一个游戏的多个事件构成一个实践表，我们看一下一个事件的基本组成结构：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhqipedjuj31as0cyjus.jpg" alt=""></figure></p>

<p>一个完整的事件由一个事件触发条件和一个事件触发结果构成。事件触发条件定义了在什么情况下事件会发生；事件触发结果定义了在满足事件触发条件后会发生些什么</p>

<p>我们现在来添加一个很基础的事件，就是让EZ一直朝向玩家鼠标指向的位置：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhqlp7pfrj318c034dgf.jpg" alt=""></figure></p>

<p>这个事件表明，系统每一拍都会触发这个事件，也就是系统每一拍都会让EZ朝向玩家鼠标指向的位置，这样子就实现了让EZ一直朝向玩家鼠标执行玩家位置的效果</p>

<p>我们来看看如何添加这个事件，首先点击事件表最下面的Add Event，会自动弹出添加触发条件的窗口:
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhqoao7ytj30y40s6dil.jpg" alt=""></figure></p>

<p>然后我们选择System，选择Every tick：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhqp6emtkj30ya0smdjv.jpg" alt=""></figure></p>

<p>然后点击后面的Add action:
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhqpy7wlmj319201m0sy.jpg" alt=""></figure></p>

<p>然后选择EZ，在弹出来的Action表中选择Set angle totward position:
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhqr3i88bj30y00s4n0j.jpg" alt=""></figure></p>

<p>分别在X,Y栏中输入Mouse.X和Mouse.Y:
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhqsgrhxgj30s80gkt9w.jpg" alt=""></figure></p>

<p>然后点击Done就可以了</p>

<p>然后可以通过相同的方式来完善这个事件表，就可以作出一个功能完善的走A小游戏了</p>

<h4 id="实现平a">实现平A</h4>

<p>如何实现平A的效果呢？事件表如下：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhqujxnzij319u0can0h.jpg" alt=""></figure></p>

<p>在我们按下键盘A建的时候，我们会将鼠标光标的模式改为十字，然后将Director的一个属性值E_on_click改为True</p>

<p>在这里说一下Director（导演）的用处，我使用这个空对象来存储一些状态值，以便控制一些动作</p>

<p>在这里E_on_click便是判断A键是否被按下，如果按下，那么E_on_click便会变为True，代表现在可以进行平a操作，我们的下一个事件便是检测E_on_click是否为True,并且玩家是否按下鼠标左键以及鼠标的位置是否在劫的身上，如果是，那么我们便产生一个平a并将鼠标光标的样式恢复，并将E_on_click恢复为False</p>

<p>在这里还有一些细节：</p>

<ul>
<li>AttackInterval控制攻击间隔</li>
<li>在玩家进行平a的时候不能移动</li>
</ul>

<p>在完成EZ的事件之后，我们还需要完成平a的事件，因为平a是不可躲避的，我们也需要使用Move To的方式控制平a的运动，平a的事件表为：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhr313pnrj31a809ignl.jpg" alt=""></figure>
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhr4a35qpj317k036q3o.jpg" alt=""></figure></p>

<ul>
<li>当一个平a对象被创建的时候，它会移动到劫的位置</li>
<li>当一个平a对象与一个劫对象碰撞的时候，它对这个劫对象造成伤害</li>
<li>也会出现平a落空的情况（没a到地方已经死了），那么当它的速度为0时将它摧毁</li>
<li>最后一个事件是让一个平a跟踪鼠标指向的那个劫对象，因为劫对象可能有多个，如果不添加这个事件可能你想攻击劫A但攻击了劫B</li>
</ul>

<h4 id="劫对象的创建和摧毁">劫对象的创建和摧毁</h4>

<p>一个走a练习游戏，一个劫对象是明显不够的，我们可以让系统每隔一段事件创建一个劫对象：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhr9boby8j31a40440to.jpg" alt=""></figure></p>

<p>而且劫对线产生的位置是随机的，这意味着你需要时刻小心劫的位置，他可能突然刷到你脸上-&gt;_&lt;-</p>

<p>我们给劫设置一个生命值，我们点击劫，点击左侧状态栏的的Instance variables：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrcc52vwj30jq04qdg5.jpg" alt=""></figure></p>

<p>在这里可以给对象添加血量等属性：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrcsmvdrj30mw0hgt9w.jpg" alt=""></figure></p>

<p>然后回到事件表，我们之前已经设置了一个事件：当一个平a对象与一个劫对象碰撞的时候，它对这个劫对象造成伤害</p>

<p>当然技能也可以：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhreb9vptj319c03aq3i.jpg" alt=""></figure></p>

<p>然后当劫的生命值降到0以下时便会被击杀：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrf09qm0j319y03et95.jpg" alt=""></figure></p>

<p>到这便完成了劫对象的创建和摧毁啦</p>

<h4 id="攻击间隔和技能cd">攻击间隔和技能CD</h4>

<p>技能当然不能随便放啦，两个独立的攻击之间当然也需要攻击间隔</p>

<p>我们可以在Director中设置两个变量：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrha32iyj30jm076jrw.jpg" alt=""></figure></p>

<p>当我们发出一次平a或者技能的时候，可以将它们设为一个特定的值，然后只有当这些值小于或等于0时，才允许发出下一次攻击：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrl68zmgj317m0380tk.jpg" alt=""></figure></p>

<p>当它们被设值的时候，我们开启一个系统计数器，每过一秒将它们减1:
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrma24zqj319405ywg1.jpg" alt=""></figure></p>

<p>这样子我们便可以实现攻击间隔和技能CD了</p>

<h4 id="记分板">记分板</h4>

<p>同样创建一个Text游戏对象：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrn46nzxj30y60sadj3.jpg" alt=""></figure></p>

<p>然后给这个记分板加上一个Anchor行为，这样它会固定在屏幕的某一个地方：
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrnzuqj7j30jq0b875b.jpg" alt=""></figure></p>

<p>然后给它加一个score属性，初始化为0:
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrpczy2dj30jm04oq38.jpg" alt=""></figure></p>

<p>然后添加事件，理所当然是一个劫被击杀的时候记分板会加1:
<figure><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gjhrox3vr8j319g05qjse.jpg" alt=""></figure></p>

<p>那么记分板也完成了</p>

<h2 id="总结">总结</h2>

<p>用Construct3制作小游戏的关键是如何去管理事件表。制作好的小游戏演示视频已经放到<a href="https://www.bilibili.com/video/BV1vD4y1R7Kh/">Bilibili</a>了</p>
<ul class="pa0">
  
</ul>
<div class="mt6 instapaper_ignoref">
      
      
      </div>
    </div>

    <aside class="w-30-l mt6-l">




</aside>

  </article>

    </main>
    <footer class="bg-black bottom-0 w-100 pa3" role="contentinfo">
  <div class="flex justify-between">
  <a class="f4 fw4 hover-white no-underline white-70 dn dib-ns pv2 ph3" href="https://hide-on-bush2.gitee.io" >
    &copy;  Hide on bush 2021 
  </a>
    <div>




<a href="https://twitter.com/GoHugoIO" target="_blank" class="link-transition twitter link dib z-999 pt3 pt0-l mr1" title="Twitter link" rel="noopener" aria-label="follow on Twitter——Opens in a new window">
  <svg height="32px"  style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M37.167,22.283c-2.619,0.953-4.274,3.411-4.086,6.101  l0.063,1.038l-1.048-0.127c-3.813-0.487-7.145-2.139-9.974-4.915l-1.383-1.377l-0.356,1.017c-0.754,2.267-0.272,4.661,1.299,6.271  c0.838,0.89,0.649,1.017-0.796,0.487c-0.503-0.169-0.943-0.296-0.985-0.233c-0.146,0.149,0.356,2.076,0.754,2.839  c0.545,1.06,1.655,2.097,2.871,2.712l1.027,0.487l-1.215,0.021c-1.173,0-1.215,0.021-1.089,0.467  c0.419,1.377,2.074,2.839,3.918,3.475l1.299,0.444l-1.131,0.678c-1.676,0.976-3.646,1.526-5.616,1.568  C19.775,43.256,19,43.341,19,43.405c0,0.211,2.557,1.397,4.044,1.864c4.463,1.377,9.765,0.783,13.746-1.568  c2.829-1.673,5.657-5,6.978-8.221c0.713-1.716,1.425-4.851,1.425-6.354c0-0.975,0.063-1.102,1.236-2.267  c0.692-0.678,1.341-1.419,1.467-1.631c0.21-0.403,0.188-0.403-0.88-0.043c-1.781,0.636-2.033,0.551-1.152-0.402  c0.649-0.678,1.425-1.907,1.425-2.267c0-0.063-0.314,0.042-0.671,0.233c-0.377,0.212-1.215,0.53-1.844,0.72l-1.131,0.361l-1.027-0.7  c-0.566-0.381-1.361-0.805-1.781-0.932C39.766,21.902,38.131,21.944,37.167,22.283z M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4  s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/></svg>

<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000" width="8px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/>
</svg>
</span></a>





<a href="https://github.com/Hide-on-bush2" target="_blank" class="link-transition github link dib z-999 pt3 pt0-l mr1" title="Github link" rel="noopener" aria-label="follow on Github——Opens in a new window">
  <svg  height="32px"  style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
  <path d="M256,32C132.3,32,32,134.8,32,261.7c0,101.5,64.2,187.5,153.2,217.9c11.2,2.1,15.3-5,15.3-11.1   c0-5.5-0.2-19.9-0.3-39.1c-62.3,13.9-75.5-30.8-75.5-30.8c-10.2-26.5-24.9-33.6-24.9-33.6c-20.3-14.3,1.5-14,1.5-14   c22.5,1.6,34.3,23.7,34.3,23.7c20,35.1,52.4,25,65.2,19.1c2-14.8,7.8-25,14.2-30.7c-49.7-5.8-102-25.5-102-113.5   c0-25.1,8.7-45.6,23-61.6c-2.3-5.8-10-29.2,2.2-60.8c0,0,18.8-6.2,61.6,23.5c17.9-5.1,37-7.6,56.1-7.7c19,0.1,38.2,2.6,56.1,7.7   c42.8-29.7,61.5-23.5,61.5-23.5c12.2,31.6,4.5,55,2.2,60.8c14.3,16.1,23,36.6,23,61.6c0,88.2-52.4,107.6-102.3,113.3   c8,7.1,15.2,21.1,15.2,42.5c0,30.7-0.3,55.5-0.3,63c0,6.1,4,13.3,15.4,11C415.9,449.1,480,363.1,480,261.7   C480,134.8,379.7,32,256,32z"/>
</svg>

<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000" width="8px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/>
</svg>
</span></a>







</div>
  </div>
</footer>

    


<script type="text/javascript" async
    src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
    MathJax.Hub.Config({
    tex2jax: {
      inlineMath: [['$','$'], ['\\(','\\)']],
      displayMath: [['$$','$$']],
      processEscapes: true,
      processEnvironments: true,
      skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
      TeX: { equationNumbers: { autoNumber: "AMS" },
           extensions: ["AMSmath.js", "AMSsymbols.js"] }
    }
    });
    MathJax.Hub.Queue(function() {
      
      
      
      var all = MathJax.Hub.getAllJax(), i;
      for(i = 0; i < all.length; i += 1) {
          all[i].SourceElement().parentNode.className += ' has-jax';
      }
    });

    MathJax.Hub.Config({
    
    TeX: { equationNumbers: { autoNumber: "AMS" } }
    });
  </script>
  </body>
</html>
